export function colorToRGB565(color: string) {
    let r, g, b;

    // 如果是十六进制格式 (#FFFFFF)
    if (color.startsWith('#')) {
        // 将十六进制颜色转换为 RGB
        r = parseInt(color.slice(1, 3), 16);
        g = parseInt(color.slice(3, 5), 16);
        b = parseInt(color.slice(5, 7), 16);
    }
    // 如果是 RGB 格式 (rgb(255, 255, 255))
    else if (color.startsWith('rgb')) {
        [r, g, b] = color.match(/\d+/g)!.map(Number);
    } else {
        throw new Error('Unsupported Color Format');
    }

    // 将 RGB 转换为 RGB565
    const r5 = (r >> 3) & 0x1f; // 取高 5 位
    const g6 = (g >> 2) & 0x3f; // 取高 6 位
    const b5 = (b >> 3) & 0x1f; // 取高 5 位

    // 合并成 RGB565 格式
    const rgb565 = (r5 << 11) | (g6 << 5) | b5;

    return rgb565.toString(16).padStart(4, '0'); // 返回 16 进制字符串，补齐 4 位
}

export function rgbToHex(string: string) {
    // 使用正则表达式提取 r, g, b 数值
    const result = string.match(/\d+/g);

    if (!result || result.length !== 3) {
        throw new Error('Invalid RGB Format');
    }

    // 解析 r, g, b 并转换为 16 进制
    const [r, g, b] = result.map(Number);

    // 使用前面的方法将 r, g, b 转换为 16 进制颜色
    return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase();
}
